// #include <bits/stdc++.h>
// using namespace std;
// typedef long long ll;
// typedef pair<int, int> pii;
// const int mod = 1e9 + 7;

// int gcd(int a, int b)
// {
//     return b ? gcd(b, a % b) : a;
// }

// ll qmi(ll a, ll b)
// {
//     ll res = 1;
//     while (b)
//     {
//         if (b & 1)
//             res = res * a % mod;
//         b >>= 1;
//         a = a * a % mod;
//     }
//     return res;
// }
// struct custom_hash
// {
//     static uint64_t splitmix64(uint64_t x)
//     {
//         x ^= x << 13;
//         x ^= x >> 7;
//         x ^= x << 17;
//         return x;
//     }
//     size_t operator()(uint64_t x) const
//     {
//         static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
//         return splitmix64(x + FIXED_RANDOM);
//     }
// };

// int main()
// {
//     int n, a, b, c;
//     cin >> n >> a >> b >> c;
//     string s;
//     cin >> s;
//     vector<char> ans;
//     int t1, t2;
//     if (s == "AB")
//     {
//         if (a > b)
//         {
//             a--, b++;
//             t1 = 1;
//             t2 = 2;
//             ans.push_back('B');
//         }
//         else
//         {
//             a++, b--;
//             t1 = 2;
//             t2 = 1;
//             ans.push_back('A');
//         }
//     }
//     else if (s == "AC")
//     {
//         if (a > c)
//         {
//             a--, c++;
//             t1 = 1;
//             t2 = 3;
//             ans.push_back('C');
//         }
//         else
//         {
//             a++, c--;
//             t1 = 3;
//             t2 = 1;
//             ans.push_back('A');
//         }
//     }
//     else if (s == "BC")
//     {
//         if (b > c)
//         {
//             b--, c++;
//             t1 = 2;
//             t2 = 3;
//             ans.push_back('C');
//         }
//         else
//         {
//             b++, c--;
//             t1 = 3;
//             t2 = 2;
//             ans.push_back('B');
//         }
//     }
//     if (a < 0 || b < 0 || c < 0)
//     {
//         cout << "No" << endl;
//         return 0;
//     }
//     for (int i = 1; i < n; i++)
//     {
//         cin >> s;
//         if (s == "AB")
//         {
//             if (t1 == 2 || t2 == 1)
//             {
//                 b++, a--;
//                 t1 = 1, t2 = 2;
//                 ans.push_back('B');
//             }
//             else
//             {
//                 b--, a++;
//                 t1 = 2, t2 = 1;
//                 ans.push_back('A');
//             }
//         }
//         else if (s == "AC")
//         {
//             if (t1 == 3 || t2 == 1)
//             {
//                 c++, a--;
//                 t1 = 1, t2 = 3;
//                 ans.push_back('C');
//             }
//             else
//             {
//                 a++, c--;
//                 t1 = 3, t2 = 1;
//                 ans.push_back('A');
//             }
//         }
//         else
//         {
//             if (t1 == 3 || t2 == 2)
//             {
//                 c++, b--;
//                 t1 = 2, t2 = 3;
//                 ans.push_back('C');
//             }
//             else
//             {
//                 b++, c--;
//                 t1 = 3, t2 = 2;
//                 ans.push_back('B');
//             }
//         }
//         if (a < 0 || b < 0 || c < 0)
//         {
//             cout << "No" << endl;
//             return 0;
//         }
//     }
//     cout << "Yes" << endl;
//     for(auto ch : ans)
//         cout << ch << endl;

//     return 0;
// }



#include <bits/stdc++.h>
using namespace std;
vector<char> ans(100010);
int n;
vector<string>s(100010);

void dfs(int x, int a, int b, int c)
{
    if (x > n) 
    {
        puts("Yes");
        for (int i = 1; i <= n; i++)cout << ans[i] << endl;
        exit(0);
    }
    if (s[x] == "AB")
    {
        if (a) ans[x] = 'B', dfs(x + 1, a - 1, b + 1, c);
        if (b) ans[x] = 'A', dfs(x + 1, a + 1, b - 1, c);
    }
    else if (s[x] == "AC")
    {
        if (a) ans[x] = 'C', dfs(x + 1, a - 1, b, c + 1);
        if (c) ans[x] = 'A', dfs(x + 1, a + 1, b, c - 1);
    }
    else
    {
        if (b) ans[x] = 'C', dfs(x + 1, a, b - 1, c + 1);
        if (c) ans[x] = 'B', dfs(x + 1, a, b + 1, c - 1);
    }
}

int main()
{
    int a, b, c;
    cin >> n >> a >> b >> c;
    for(int i = 1; i <= n; i++) cin >> s[i];
    dfs(1, a, b, c);
    cout << "No" << endl;
    return 0;
}